<?php

class UserController extends Zend_Controller_Action{

    private $_params;
	private $_auth;	
    private $_acl;
    public function init(){
        $this->_params      = $this->_request->getParams();        
        $this->_auth        = new My_Authuser();
        $this->view->auth   = $this->_auth;        
        $this->_auth        = $this->_auth->checkAuthentication();
        $this->view->auth   = $this->_auth;
    }
    public function indexAction(){
        $modelU = new Default_Model_User();
        $modelP = new Default_Model_Product();        
        $formChangePass = new Default_Form_ChangePass();
        $this->view->formChangePass = $formChangePass;
        if($this->_auth['userId']){
            $userCheck = $modelU->getDataUserById($this->_auth['userId'])->toArray();                
            $proList = $modelP->getAllDataMagage(array('userId'=>$this->_auth['userId']))->toArray();        
            $wait=0;$expired=0;$run=0;
            $count = array('run'=>0,'wait'=>0,'expired'=>0);                
            foreach($proList as $o){
                if((int)$o['status']==1){
                    $count['wait']++; 
                }elseif((int)$o['status']==3){
                    $count['expired']++;
                }elseif((int)$o['status']==2){
                    if($o['endDate']>time()){
                        $count['run']++;
                    }else{
                        $count['expired']++;
                    }                                
                }    
            }     
            $this->view->proCount  = $count;                                                 
            $this->view->userCheck = $userCheck;
        }else{
            $this->_helper->redirector('index','index','default');
        }            
                                    
    }    
    public function editinfoAction(){
        if($this->_request->isPost()){
            $data = $this->_request->getPost();
            $updateData['id'] = $this->_request->getParam('id');
            $updateData['fullname'] = $this->_request->getParam('fullname'); 
            $updateData['address'] = $this->_request->getParam('address');
            $updateData['mobile'] = $this->_request->getParam('mobile');
            //pr($updateData['mobile']);                        
            if($updateData['mobile'] && $updateData['address'] && $updateData['fullname']){                
                $modelU = new Default_Model_User();
                $mobiCheck = $modelU->getDataByMobile($updateData['mobile']);                
                if(!$mobiCheck || $mobiCheck['id']==$updateData['id']){                    
                    $modelU->updateData($updateData['id'],$updateData);
                    $this->view->mess ="Cập nhật thành công!";
                    $this->view->flag = "success";                        
                    $this->_forward('index','user','default');
                }else{
                    $this->view->mess ="Số điện thoại này đã được đăng ký với hệ thống!";
                    $this->view->flag = "alert";
                    $this->view->dire = "info";
                    $this->_forward('index','user','default');
                }                
            }else{                      
                $this->view->mess ="Vui lòng điền đầy đủ thông tin";
                $this->view->flag = "alert";
                $this->view->dire = "info";
                $this->_forward('index','user','default');   
            }            
        }else{
            $this->_helper->redirector('index','user','default');
        }
    }
    public function changepassAction(){                
        if($this->_request->isPost()){
            $formData = $this->_request->getPost();
            $form = new Default_Form_ChangePass();            
            if($form->isValid($formData)){                
                $modelU = new Default_Model_User();                
                $userData = $modelU->getDataById($this->_auth['userId']);                
                $params['oldpwd'] = md5($form->getValue('oldpwd'));
                $params['newpwd1'] = $form->getValue('newpwd1');
                //pr($userData['password']);
                if($userData['password'] != $params['oldpwd']){                    
                    $this->view->mess ="Bạn nhập sai mật khẩu hiện tại!";
                    $this->view->flag = "alert";
                    $this->view->dire = "pass";
                    $this->_forward('index','user','default');
                }else{                                
                    $st = $modelU->updatePass($this->_auth['userId'],$params['newpwd1']);                   
                    if($st){
                        $this->view->mess ="Đổi password thành công!!";
                        $this->view->flag = "success";                        
                        $this->_forward('index','user','default');                        
                    }else{
                        $this->view->mess ="Có lỗi! Vui lòng thử lại sau!";
                        $this->view->flag = "alert";
                        $this->view->dire = "pass";                        
                        $this->_forward('index','user','default');                        
                    }
                }                
            }else{                                
                $this->view->mess ="Mật khẩu không chính xác";
                $this->view->flag = "alert";
                $this->view->dire = "pass";
                $this->_forward('index','user','default');
            }
        }else{
            $this->_helper->redirector('index','user','default');
        }        
    }
    public function rechargeAction(){
        if($this->_auth['userId']){
            $form = new Default_Form_Recharge();
            $this->view->form = $form;        
            if($this->_request->isPost()){
                $formData = $this->_request->getPost();            
                if($form->isValid($formData)){
                    $modelU = new Default_Model_User();
                    $user = $modelU->getDataUserById($this->_auth['userId'])->toArray();
                    
                    $chargeData['pin_card']         = $form->getValue('pin_card');
					$chargeData['card_serial']      = $form->getValue('card_serial'); 
                    $chargeData['type_card']        = $form->getValue('type_card');                
                    $chargeData['ref_code']         = md5($user['email']);  
                    $chargeData['client_fullname']  = $this->_helper->setup($user['fullname']);
                    $chargeData['client_email']     = $user['email'];
                    $chargeData['client_mobile']    = $user['mobile'];
                    
                    $result = My_Nganluong::cardCharge($chargeData);
                    //Giả định nạp thẻ thành công
                        //$result['error_code'] = '00';
                        //$result['card_amount'] = '10000';  
                    //End
                    //pr($result);
                    if($result['error_code'] == '00'){                    
                        $this->view->mess ="Nạp thẻ thành công !! Mệnh giá: ".number_format((int)$result['card_amount'],0,'.',',').' VNĐ';
                        $this->view->flag = "success";                                        
                        $modelU->updateGold($this->_auth['userId'],array('gold'=>(int)$user['gold']+(int)$result['card_amount']) );                                      
                    }elseif((int)$result['error_code'] >= 7 && (int)$result['error_code'] <= 10){
                        $this->view->mess ="Thẻ này đã được sử dụng hoặc không tồn tại<br>".$result['error_code'];
                        $this->view->flag = "alert";
                    }elseif((int)$result['error_code'] >= 11 && (int)$result['error_code'] <= 12){
                        $this->view->mess ="Nhập sai Mã thẻ hoặc số Serial<br>".$result['error_code'];
                        $this->view->flag = "alert";                    
                    }else{
                        $this->view->mess ="Lỗi chưa định nghĩa<br>".$result['error_code'];
                        $this->view->flag = "alert";
                    }                                 
                }else{
                    echo('<script>alert("Vui lòng điền đầy đủ thông tin !!");</script>');
                    return;                                                
                }                                                                        
            }else{
                $this->view->form = $form;
            }            
        }else{
            $this->_helper->redirector('index','index','default');
        }                
    }
    public function promanAction(){        
        $modelP = new Default_Model_Product();
        if($this->_auth['userId']){
            $proList = $modelP->getAllDataMagage(array('userId'=>$this->_auth['userId']))->toArray();                                       
            $this->view->proList = $proList;
        }else{
            $this->_helper->redirector('index','index','default');
        }                                                                
    }
    public function forgotpassAction(){        
        if($this->_request->isPost()){
            $email = $this->getRequest()->getPost('email');               
            $emailValid = new Zend_Validate_EmailAddress();
            if($emailValid->isValid($email)){                
                $modelU = new Default_Model_User();
                $user = $modelU->getDataByEmail($email);
                if($user){
                    $user = $user->toArray();                    
                    $modelM = new Default_Model_Mail();                    
                    $mailDetail = $modelM->getDataId('revivePass')->toArray();
                    $now = time();
                    $pre = substr(md5($user['email'].$now),0,12);       //12 ký đầu
                    $suf = substr(md5($now.$user['id']),20,12);         //12 ký sau tiếp sau n ký giữa
                    $cen = strlen($user['id']).$user['id'];             //n ký giữa                    
                    $hash = $pre.$cen.$suf;                                                             
                    $link = BASE_URL1.'/user/revivepass/hash/'.$hash;                                        
                    $mailDetail['content'] = str_replace('[emanlluf]',$user['fullname'],$mailDetail['content']); 
                    $mailDetail['content'] = str_replace('[emanresu]',$user['username'],$mailDetail['content']);
                    $mailDetail['content'] = str_replace('[knil]',$link,$mailDetail['content']);
                                                                                
                    $website= new Zend_Config_Ini(CONFIG_PATH.'/website.ini', APPLICATION_ENV);
                    $subject = $mailDetail['subject'];                    
                    $name = $mailDetail['name'];
                    $sender = $website->website->gmail;
                    $pwd = $website->website->gmailpw;                    
                    $receiver = $user['email'];
                    $content = $mailDetail['content'];                    
                    My_Gmailsender::gsend($sender,$pwd,$receiver,$subject,$name,$content);
                    $modelU->updateRandom($user['id'],$now);          
                    $this->view->mess ="Mail đã gởi";
                    $this->view->flag = "success";    
                }else{
                    $this->view->mess ="Mail không tồn tại đăng ký <a id='regisRegis' href='auth/regis'>tại đây</a>";
                    $this->view->flag = "alert";
                }                             
            }else{
                $this->view->mess ="Mail sai rồi";
                $this->view->flag = "alert";                                 
            }            
        }else{
            if($this->_auth['userId']){
                $this->_helper->redirector('index','user','default');
            }
        }        
    }
    public function revivepassAction(){
        $hash = $this->_getParam('hash', 0);        
        $modelU = new Default_Model_User();
        $form = new Default_Form_RevivePass();                                
        if($this->_request->isPost()){
            $formData = $this->_request->getPost();                        
            if($form->isValid($formData)){                                
                if($form->getValue('hash') == $hash){
                    $len = substr($hash,12,1);
                    $id = substr($hash,13,$len);                                
                    $user = $modelU->getDataUserById($id);
                    if($user){
                        $pre = substr($hash,0,12);
                        $suf = substr($hash,13+$len,12);                                        
                        if($pre==substr(md5($user['email'].$user['random']),0,12) && $suf==substr(md5($user['random'].$user['id']),20,12)){
                            $modelU->updatePass($user['id'],$form->getValue('newpwd1'));
                            $modelU->updateRandom($user['id'],'');
                            $this->view->mess ="Đổi thành công";
                            $this->view->flag = "success";                            
                        }else{
                            $this->view->mess ="Đường dẫn này đã được sử dụng. Vui lòng dùng chức năng quên mật khẩu để đặt mật khẩu mới.";
                            $this->view->flag = "alert";
                        }
                    }else{
                        pr('direct to error page');
                    }
                }else{
                    pr('direct to error page');
                }
            }else{                                
                $this->view->mess ="Vui lòng điều đầy đủ thông tin";
                $this->view->flag = "alert";
                $form->populate(array('hash'=>$hash));
            }            
        }else{                 
            if($hash=='0'){                
                $this->_helper->redirector('index','index','default');   
            }else{                
                $len = substr($hash,12,1);
                $id = substr($hash,13,$len);                                
                $user = $modelU->getDataUserById($id);
                if($user){
                    $pre = substr($hash,0,12);
                    $suf = substr($hash,13+$len,12);                                        
                    if($pre==substr(md5($user['email'].$user['random']),0,12) && $suf==substr(md5($user['random'].$user['id']),20,12)){                        
                        $formData = $this->_request->getPost();
                        $this->view->form = $form;
                        $form->populate(array('hash'=>$hash));
                    }else{
                        $this->view->mess ="Đường dẫn này đã được sử dụng. Vui lòng dùng chức năng quên mật khẩu để đặt mật khẩu mới.";
                        $this->view->flag = "alert";                        
                    }
                }else{
                    pr('direct to error page');
                }                                 
            }
                            
        }                        
    }
    

} 